package com.px.business.service;

import com.px.business.domain.*;
import com.px.business.domain.input.ItemInput;

import java.util.List;
import java.util.Map;

/**
 * 评估明细项Service接口
 *
 * @author 品讯科技
 * @date 2024-08
 */
public interface IEvaluationItemService {
    /**
     * 查询评估明细项
     *
     * @param evaluationItemId 评估明细项主键
     * @return 评估明细项
     */
    EvaluationItem selectEvaluationItemByEvaluationItemId(Long evaluationItemId);

    /**
     * 查询评估明细项列表
     *
     * @param evaluationItem 评估明细项
     * @return 评估明细项集合
     */
    List<EvaluationItem> selectEvaluationItemList(EvaluationItem evaluationItem);

    /**
     * 新增评估明细项
     *
     * @param evaluationItem 评估明细项
     * @return 结果
     */
    int insertEvaluationItem(EvaluationItem evaluationItem);

    /**
     * 修改评估明细项
     *
     * @param evaluationItem 评估明细项
     * @return 结果
     */
    int updateEvaluationItem(EvaluationItem evaluationItem);

    /**
     * 批量删除评估明细项
     *
     * @param evaluationItemIds 需要删除的评估明细项主键集合
     * @return 结果
     */
    int deleteEvaluationItemByEvaluationItemIds(Long[] evaluationItemIds);

    /**
     * 删除评估明细项信息
     *
     * @param evaluationItemId 评估明细项主键
     * @return 结果
     */
    int deleteEvaluationItemByEvaluationItemId(Long evaluationItemId);

    /**
     * 保存评估项
     *
     * @param itemInput 评估入参
     * @return 结果
     */
    boolean saveItemByIndicator(ItemInput itemInput);

    /**
     * 根据体系标识插入评估项
     * @param itemInput
     * @return
     */
    boolean saveItemBySystem(ItemInput itemInput);

    /**
     * 获取评估项及值域
     *
     * @param itemInput 评估入参
     * @return 结果
     */
    List<Map> getItemRange(ItemInput itemInput);

    /**
     * 校验评估项及值域
     *
     * @param itemInput 评估入参
     * @return 结果
     */
    Map<String, String> checkItemRange(ItemInput itemInput);

    /**
     * 查询评估项
     *
     * @param evaluationApplicationId 申请标识
     * @return 结果
     */
    List<Long> selectEvaluationItemByEvaluationApplicationId(Long evaluationApplicationId);


    int updateEvaluationItemFile(EvaluationItem evaluationItem);

}
